package cn.ambeius.backend.tm;

public interface TransactionManager {

    /**
     * 功能描述：开启一个事务，并且返回一个XID
     *
     * @author HeJiaWei
     * @date 22/01/2024
     */
    long begin();

    /**
     * 功能描述：提交一个事务
     *
     * @author HeJiaWei
     * @date 22/01/2024
     */
    void commit(long xid);

    /**
     * 功能描述：取消一个事务
     *
     * @author HeJiaWei
     * @date 22/01/2024
     */
    void abort(long xid);

    /**
     * 功能描述：查询一个事务的状态是否是正在进行的状态
     *
     * @author HeJiaWei
     * @date 22/01/2024
     */
    boolean isActive(long xid);

    /**
     * 功能描述：查询一个事务的状态是否是已提交
     *
     * @author HeJiaWei
     * @date 22/01/2024
     */
    boolean isCommitted(long xid);

    /**
     * 功能描述：查询一个事务的状态是否是已取消
     *
     * @author HeJiaWei
     * @date 22/01/2024
     */
    boolean isAborted(long xid);

    /**
     * 功能描述：关闭TM
     *
     * @author HeJiaWei
     * @date 22/01/2024
     */
    void close();
}